package com.yuandengta.common.exception;

import lombok.Data;

/**
 * 错误码管理 {@link BizCode}
 *
 * 错误码和错误信息定义类
 * 1. 错误码定义规则为5位数字
 * 2. 前两位表示业务场景，最后三位表示错误码。
 *    如：10001，10表示通用，001表示系统未知异常
 * 3. 维护错误码后需要维护错误描述，将他们定义为枚举形式
 * 错误码列表：
 * 10：通用
 *  001：参数格式校验失败
 * 11：商品
 * 12：订单
 * 13：购物车
 * 14：物流
 * 15：优惠券
 * 16：用户
 * 20：库存
 *
 * @author Kevin
 * @email: 178676392@qq.com
 */
public enum BizCode {
    /**
     * 系统未知异常
     */
    UNKNOWN_EXCEPTION(10000, "系统未知异常"),
    /**
     * 参数格式校验失败
     */
    VALID_EXCEPTION(10001, "参数格式校验失败"),
    /**
     * 短信验证码发送频率太高
     */
    SMS_CODE_EXCEPTION(10002, "短信验证码发送频率太高，请稍后再重试"),
    TOO_MANY_REQUESTS(10003, "请求流量过大，系统限流"),
    /**
     * 商品上架异常
     */
    PRODUCT_UP_EXCEPTION(11000, "商品上架异常"),
    USER_EXIST_EXCEPTION(15001, "用户已存在"),
    MOBILE_EXIST_EXCEPTION(15002, "手机号已存在"),
    ACCOUNT_PASSWORD_EXCEPTION(15003, "账号密码错误"),
    NO_STOCK_EXCEPTION(20001, "商品库存不足");

    private int code;
    private String message;

    BizCode (int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}